﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using RMS.Common;
using RMS.DB;

namespace RMS
{
    public partial class DialogSuppliers : ICommonForm
    {
        public DialogSuppliers()
        {
            InitializeComponent();
            //Set Top Most
            this.TopMost = Constants.FullScreen();
        }
        SupplierMng supplierMng = new SupplierMng();
        private string id;
        public string result
        {
            get
            {
                return (txtID.Text.Trim());
            }
        }

        private void DialogSuppliers_Load(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
            BindDataGrid();
        }
        private void BindDataGrid()
        {
            dataGridView1.DataSource = supplierMng.GetAllItems();
            dataGridView1.ClearSelection();
        }
        private void BindDataToTextbox(string id, string name, string desc, string invoiceNo, string memoMo, string itemNo, string styleNo)
        {
            txtID.Text = id;
            txtName.Text = name;
            txtDesc.Text = desc;
        }
        private void ClearText()
        {
            txtID.Text = "";
            txtName.Text = "";
            txtDesc.Text = "";
        }

        private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Selected)
                {
                    var item = supplierMng.GetItemByElements(Convert.ToString(row.Cells[1].Value));
                    BindDataToTextbox(item.ID, item.Name, item.Description, item.InvoiceNo, item.MemoNo, item.ItemNo, item.SupplierStyleNo);
                }
            }
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Cells[0].Selected)
                {
                    var item = supplierMng.GetItemByElements(Convert.ToString(row.Cells[1].Value));
                    BindDataToTextbox(item.ID, item.Name, item.Description, item.InvoiceNo, item.MemoNo, item.ItemNo, item.SupplierStyleNo);
                    row.Selected = true;
                    return;
                }
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            if (result.Replace(";", "") == "")
            {
                MessageBox.Show("Hãy chọn một giá trị!", "Chú ý");
                return;
            }
            this.DialogResult = DialogResult.OK;
            this.Close();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtID.Text.Trim()))
            {
                MessageBox.Show("Bạn phải nhập mã nhà cung cấp.", "Chú ý");
                return;
            }
            if (string.IsNullOrEmpty(txtName.Text.Trim()))
            {
                MessageBox.Show("Bạn phải nhập tên nhà cung cấp.", "Chú ý");
                return;
            }
            if (supplierMng.AddItem(txtID.Text.Trim(), txtName.Text.Trim(), txtDesc.Text.Trim()))
            {
                BindDataGrid();
                SelectAddedRow(txtID.Text.Trim());
            }
        }
        private void SelectAddedRow(string id)
        {
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (id == Convert.ToString(row.Cells[1].Value))
                {
                    row.Cells[0].Selected = true;
                    row.Selected = true;
                    return;
                }
            }
        }
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            var id = "";
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Selected)
                {
                    id = Convert.ToString(row.Cells[1].Value);
                }
            }
            if (string.IsNullOrEmpty(id))
            {
                MessageBox.Show("Bạn phải chọn một nhà cung cấp.", "Chú ý");
                return;
            }
            if (supplierMng.UpdateItem(txtID.Text.Trim(), txtName.Text.Trim(), txtDesc.Text.Trim()))
            {
                BindDataGrid();
                MessageBox.Show("Cập nhật thành công!", "Chú ý");
            }
            ClearText();
        }

        private void btnDel_Click(object sender, EventArgs e)
        {
            var id = "";
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                if (row.Selected)
                {
                    id = Convert.ToString(row.Cells[1].Value);
                }
            }
            if (string.IsNullOrEmpty(id))
            {
                MessageBox.Show("Bạn phải chọn một nhà cung cấp.", "Chú ý");
                return;
            }
            if (MessageBox.Show(Constants.Msg.ConfirmDelete, "Chú ý", MessageBoxButtons.YesNo) == DialogResult.Yes)
                if (supplierMng.DeleteItem(id))
                {
                    MessageBox.Show("Xóa thành công!", "Chú ý");
                    BindDataGrid();
                    ClearText();
                }
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1_CellClick(null, null);
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
    }
}
